package com.study.casedemo;

import java.util.Random;
import java.util.Scanner;

public class Demo7 {
    public static void main(String[] args) {
        // 双色球系统
        // 产生幸运号
        int[] luckNumber = createLuckNumber();
//        Demo6.printArr(luckNumber);
        // 用户选号
        int[] usIn = userInputNumbers();
//        Demo6.printArr(usIn);
        //开奖
        judge(luckNumber,usIn);

    }

    /**
     * 中奖号
     * @return
     */
    public static  int[] createLuckNumber(){
        // 定义一个动态初始化的数组，长度为7
        int[] numbers = new int[7];
        // 数组前六个存红色6个随机号(1~33)
        Random rd = new Random();
        for (int i = 0; i < numbers.length-1; i++) {
            while (true){
                int data = rd.nextInt(33)+1;
                // 做标记：判断生成的随机数是否重复
                boolean flag = true;
                // 重复跳出循环
                for (int j = 0; j < i; j++) {
                    if (numbers[j] == data){
                        flag = false;
                        break;
                    }
                }
                // 标记为true：存储随机数。
                if (flag){
                    numbers[i] = data;
                    break;
                }
            }
        }
        // 数组第7个存储蓝色号码(1~16)
        numbers[numbers.length-1] = rd.nextInt(16)+1;
        return numbers;
    }

    // 用户选号
    public static int[] userInputNumbers(){
        // 定义一个动态整形数组存储7个号码
        int[] numbers = new int[7];
        Scanner sc = new Scanner(System.in);
        boolean flag = false;
        // 选红球（6个）不能重复
        for (int i = 0; i < numbers.length-1; i++) {
            while (true){
                flag = true;
                System.out.println("请输入第"+(i+1)+"个红球号码(1~33)：");
                int data = sc.nextInt();
                if (data > 33 || data < 1){
                    System.out.println("你输入的号码不是在1~33之间，请重新输入！");
                    continue;
                }
                if (i == 0){
                    numbers[i] = data;
                    break;
                }
                for (int j = 0; j < i; j++) {
                    if (numbers[j] == data){
                        flag = false;
                        System.out.println("你输入的号码有重复，请重新开始输入！");
                        break;
                    }
                }
                if (flag){
                    numbers[i] = data;
                    break;
                }
            }
        }
        // 选篮球（1个）
        System.out.println("请输入蓝球号码(1~16)：");
        while (true){
            int data = sc.nextInt();
            if (data >0 && data < 17){
                numbers[numbers.length-1] = data;
                break;
            }else {
                System.out.println("你输入的蓝球号码有误！请重新输入：");
            }
        }
        return numbers;
    }

    // 开奖
    public static void judge(int[] luckNumbers,int[] userNumbers){
        //红球中奖个数
        int redHitNumbers = 0;
        //蓝球中奖个数
        int blueHitNumbers = 0;
        // 判断红球中了几个？开始统计
        for (int i = 0; i < userNumbers.length - 1; i++) {
            for (int j = 0; j < luckNumbers.length - 1; j++) {
                if (userNumbers[i] == luckNumbers[j]){
                    redHitNumbers++;
                    break;
                }
            }
        }
        // 判断篮球是否命中？
        blueHitNumbers = userNumbers[userNumbers.length-1] == luckNumbers[luckNumbers.length-1] ? 1 : 0;

        // 打印中奖信息
        // 中奖号码：？
        System.out.print("中奖号码：");
        Demo6.printArr(luckNumbers);
        // 你投注的号码：？
        System.out.print("投注号码：");
        Demo6.printArr(userNumbers);
        // 红球中奖个数：？
        System.out.println("红球中奖个数：" + redHitNumbers);
        // 篮球是否命中？
        System.out.println("篮球是否命中：" + (blueHitNumbers == 1 ? "是" : "否"));

        // 判断中奖等级和金额
        if (blueHitNumbers == 1 && redHitNumbers < 3){
            System.out.println("恭喜你中了六等奖，奖金：5￥");
        } else if (blueHitNumbers == 1 && redHitNumbers == 3
                    || blueHitNumbers == 0 && redHitNumbers == 4){
            System.out.println("恭喜你中了五等奖，奖金：10￥");
        }else if (blueHitNumbers == 1 && redHitNumbers == 4
                    || blueHitNumbers == 0 && redHitNumbers == 5){
            System.out.println("恭喜你中了四等奖，奖金：200￥");
        }else if (blueHitNumbers == 1 && redHitNumbers == 5){
            System.out.println("恭喜你中了三等奖，奖金：3000￥");
        }else if (blueHitNumbers == 0 && redHitNumbers == 6){
            System.out.println("恭喜你中了二等奖，奖金：5000000￥");
        }else if (blueHitNumbers == 1 && redHitNumbers == 6){
            System.out.println("恭喜你中了一等奖，奖金：10000000￥");
        }else {
            System.out.println("感谢你为福利事业做出突出贡献！");
        }
    }

}
